package ucla.axelia.controlador.servicios;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.obelisco.modelo.data.DataGenerica;

import ucla.axelia.controlador.interfaces.IServicioAdministracionReporteActividadesPorPrograma;
import ucla.axelia.modelo.dao.ServicioActividadSuspendidaDAO;
import ucla.axelia.modelo.dao.ServicioProgramaDAO;
import ucla.axelia.modelo.data.ActividadSuspendida;
import ucla.axelia.modelo.data.Programa;

public class ServicioAdministracionReporteActividadesSuspendidasPorPrograma
		implements IServicioAdministracionReporteActividadesPorPrograma {

	private ServicioProgramaDAO servicioProgramaDAO;
	private ServicioActividadSuspendidaDAO servicioActividadSuspendidaDAO;
	
	@Override
	public List<Programa> buscarProgramas() {
		return servicioProgramaDAO.buscarTodos(DataGenerica.DATA_ACTIVO);
	}

	@Override
	public List<ActividadSuspendida> obtenerActividadesPorPrograma(Programa programa) {
		Session sesion = servicioActividadSuspendidaDAO.getSessionFactory().getCurrentSession();
		Query query = sesion.createQuery(
				"from ActividadSuspendida where actividadPlanificada.actividad.programa = :programa " +
				"and estado = :estado");
		query.setEntity("programa", programa);
		query.setString("estado", DataGenerica.DATA_ACTIVO);
		return query.list();
	}

	
	// Getters y Setters
	
	public ServicioProgramaDAO getServicioProgramaDAO() {
		return servicioProgramaDAO;
	}

	public void setServicioProgramaDAO(ServicioProgramaDAO servicioProgramaDAO) {
		this.servicioProgramaDAO = servicioProgramaDAO;
	}

	public ServicioActividadSuspendidaDAO getServicioActividadSuspendidaDAO() {
		return servicioActividadSuspendidaDAO;
	}

	public void setServicioActividadSuspendidaDAO(
			ServicioActividadSuspendidaDAO servicioActividadSuspendidaDAO) {
		this.servicioActividadSuspendidaDAO = servicioActividadSuspendidaDAO;
	}
	
}
